1. Field of the Invention
This invention relates to techniques for dealing with calls between objects or entities in computer software and systems.
2. Description of the Prior Art
Object oriented computer software and systems utilize entities, called objects, for providing enhanced abilities to design, develop, implement and operate software and other computer related systems. One conventional object related system is known as the object linking and embedding, or OLE, system. Object related systems use various strategies for exchanging data with and between objects. One conventional approach to handling the interchange of data with objects is known as the System Object Model, or SOM, used in the OS/2 operating system.
Another conventional approach for the interchange of data with objects is known as the dynamic data exchange, or DDE, system format used in Windows in the DOS operating system. The DDE system was originally developed for use with non-object oriented systems and modified by means of the SOM for use with object oriented systems through message passing utilizing a system table.
In conventional object oriented systems, the interchange of data with objects is accomplished with a two phase data exchange procedure. In such conventional two phase data exchange procedures, the first phase or stage includes the communication request from the calling or client object which must be acknowledged by the called or server object. Successful completion of the first stage results in the receipt by the client object of the acknowledgement of the communication request by the server object. Thereafter, the second stage of the server becomes available.
Remote procedure call, or RPC, techniques are known and used for many operations between platforms but often have overhead requirements within a platform which degrade system efficiency and can result, under certain conditions, in loss of accuracy. What are needed are techniques for data interchange with both local and remote objects which do not result in the reduction of data transfer accuracy nor the increased processing overhead in conventional data interchange systems.
In accordance with the present invention, inter-object communications are handled through an internal remote procedure call which provides an enhanced mode for local platform object oriented environments. In particular, inter-object communications between a client and a server object on the same platform are handled via an internal queuing arrangement using local platform memory, eliminating the need for the client object to wait for an acknowledgement by the server object. That is, the remote procedure call operates in a two phase data exchange mode that is transparently superseded when the server object is determined to be on the same platform as the client object. The message calls are placed in a local queue with an object identifier or handle when the client object first requests acknowledgement from the server object of a message call from the client to the server. No further action by, or delay of, the client object is then required. No overhead is wasted by repetitive requests for the same data exchange if the server object is not currently available. No unwanted multiple data exchanges result and therefore data exchange is maintained at 100% accuracy. The present invention thereby avoids the reduction in system performance inherent with known data interchange techniques which may result, for example, from multiple requests for data transfer acknowledgements.
In another aspect, the present invention provides a method of communicating between client and server entities on computer platforms interconnected by a transport network by determining if a server is located on the same local platform as a client wishing to communicate a message to the server, transferring the message to the server via the transport network if the client and server are not located on the same local platform, storing the message in a local memory queue on the local platform if the client and server are located on the local platform, causing the server to interrogate the local queue when the server is available, and then transferring the message to the server from the local memory queue.